package lbframework.bean.panel;

import java.awt.Component;
import java.util.Vector;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JViewport;

public class LBPanel extends javax.swing.JPanel {

    private Vector<Component> vComponent = null;

    public LBPanel() {
        initComponents();
    }

    @Override
    public void setEnabled(boolean enabled) {
        if (!enabled) {
            if (vComponent == null) {
                vComponent = new Vector();
            } else {
                return;
            }
        } else {
            if (vComponent == null) {
                return;
            }
        }

        procurarCampo(this.getComponents(), enabled);

        if (enabled) {
            vComponent = null;
        }
    }

    private void procurarCampo(Component[] i_componente, boolean valor) {
        for (int i = 0; i < i_componente.length; i++) {
            Component oComponente = i_componente[i];

            if (oComponente instanceof JPanel) {
                procurarCampo(((JPanel) oComponente).getComponents(), valor);
            } else if (oComponente instanceof JScrollPane) {
                procurarCampo(((JScrollPane) oComponente).getComponents(), valor);
            } else if (oComponente instanceof JViewport) {
                procurarCampo(((JViewport) oComponente).getComponents(), valor);
            } else {
                if (!(oComponente instanceof JLabel)) {
                    if (!valor) {
                        if (!oComponente.isEnabled()) {
                            vComponent.add(oComponente);
                        } else {
                            oComponente.setEnabled(false);
                        }
                    } else {
                        if (!vComponent.contains(oComponente)) {
                            oComponente.setEnabled(true);
                        }
                    }
                }
            }
        }
    }

    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        setBorder(javax.swing.BorderFactory.createTitledBorder(""));
    }// </editor-fold>//GEN-END:initComponents
    // Variables declaration - do not modify//GEN-BEGIN:variables
    // End of variables declaration//GEN-END:variables
}
